1
수동 메모리 관리의 함정
AI013Lesson 5
00:00

수동 메모리 관리는 new 그리고 delete 는 취약한 "책임 계약". 프로그래머는 조기 반환과 예외를 포함하여 모든 실행 경로를 완벽하게 예측해야 자원이 해제됨을 보장할 수 있습니다. 이 접근 방식은 체계적 실패에 취약합니다.

체계적 결함

  • 누수 유인구: 복잡한 논리(조건문, 스위치)에서 매번 new 와 짝지어주지 않으면 delete 시스템 성능이 시간이 지남에 따라 저하됩니다.
  • 포인터 무효화: 예를 들어 dangling 포인터 (삭제 후 메모리 접근) 또는 중복 해제 정의되지 않은 동작과 보안 취약점을 유발합니다.
  • 예외 안전성: 할당과 해제 사이에 예외가 발생하면, delete 는 완전히 건너뜁니다.
new char[]X조기 반환 (누수)X예외 (누수)방지기 ()• std::unique_ptr• std::shared_ptr• std::weak_ptr

그리고 진화

C++11/14은 <memory> 헤더를 '난쟁이 포인터'에서 벗어나 컴파일러 레벨에서 안전성을 강제하는 자동 소유 모델로 전환했습니다.

main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>